package cn.edu.xjtu.算法刷题计划.算法入门.sortedSquares;

/**
 * 977. 有序数组的平方
 * 
 * 给你一个按 非递减顺序 排序的整数数组 nums，返回 每个数字的平方 组成的新数组，要求也按 非递减顺序 排序。
 */
public class Solution {
    public static void main(String[] args) {
        Solution solu = new Solution();
        int[] nums = { -4, -1, 0, 3, 10 };
        System.out.println(solu.sortedSquares(nums));
    }

    public int[] sortedSquares(int[] nums) {
        if (nums.length == 0) {
            return null;
        }
        int left = 0;
        int right = nums.length - 1;
        int[] ret = new int[nums.length];
        int index = nums.length - 1;
        while (left <= right) {
            if (Math.abs(nums[left]) >= Math.abs(nums[right])) {
                ret[index--] = nums[left] * nums[left];
                left++;
            } else {
                ret[index--] = nums[right] * nums[right];
                right--;
            }
        }
        return ret;
    }
}
